package main

import "fmt"

var (
	aa = 3
	ss = "kkk"
	bb = true
)

//两者等价
var aa1 = 3
var ss1 = "kkk"
var bb1 = true

//go中自动的进行了初始化
//java在输出该字段的时候，需要自己赋予初值
//变量定义了以后，就必须使用，在方法内的变量
func variableInit() {
	var a int
	var s string
	fmt.Printf("%d,%q\n", a, s)
}

func variableInitValue() {
	var a, b int = 3, 4
	var s string = "abc"
	fmt.Println(a, b, s)
}

//推断类型
func variableTypeDeduction() {
	var a, b, c, d = 1, 2, true, "def"
	var e = 2.00
	fmt.Println(a, b, c, d, e)
}

//省略var，初次定义变量,建议使用
func variableShorter() {
	a, b, c, d := 1, 2, true, "def"
	//等同于
	//var a, b, c, d = 1, 2, true, "def"
	e := 2.00
	//不支持
	//b:= 9
	fmt.Println(a, b, c, d, e)
}
func main() {
	fmt.Println("Hello world")
	variableInit()
	variableInitValue()
	variableTypeDeduction()
	variableShorter()
}
